コスト配分タグを活用してAmazon ECSクラスターやECSサービス単位の利用料金を把握する方法

コスト配分タグを活用してAmazon ECSクラスターやECSサービス単位の利用料金を把握する方法

Clock Icon2025.01.09

はじめに

Amazon ECSのクラスターやECSサービスで起動するタスクにタグを設定することで、タグ単位で利用料金を把握することが可能です。

ECSのコストをタグで管理するには、ECSサービスやECSクラスターではなく、ECSタスクにタグを付与する必要があります。

ECSサービスに対してタグを追加し、さらにタグの伝播を有効化することで、ECSサービスから起動されたタスクにも自動的にタグが付与されます。

なお、タグの伝播はデフォルトでは無効化されているため、手動で有効化する必要があります。

試してみる

すでにECSサービスが作成済みであることを前提とします。

今回は、ECSサービスで起動しているタスクの利用料金を把握できるよう手順を解説します。

既存のECSサービスでタスクにタグを付与する手順は、以下の通りです。

  1. タスクの起動に使用するECSサービスに対してタグを付与する
  2. ECSサービスの設定でタグの伝播を有効化し、タスクを再起動する

タグを付与

タスクを起動するECSサービスにタグを付与します。

タグ付けの際、今回は、キー名にCmBillingGroupを指定します。

cm-hirai-screenshot 2024-12-24 8.53.46

CmBillingGroupタグは、弊社メンバーズのお客様向けに提供しているメンバーズポータルサイトで、AWS利用金額を分析する際に使用するタグ名です。このタグの値をもとに、利用金額を分類します。

タグの伝播

ECSサービスの設定で、タグの伝播を有効化します。

以下のコマンドを実行し、出力結果がNONEであることを確認することで、タグの伝播が無効化されていることがわかります。

$ aws ecs describe-services \
  --cluster クラスター名\
  --services サービス名 \
  --query 'services[*].propagateTags' \
  --output text

NONE

マネジメントコンソール上でもタグの伝播設定を確認できます。
cm-hirai-screenshot 2024-12-24 9.12.50

propagateTagsには、以下の3つの値が設定可能です。

  • NONE:タグの伝播が無効です。
  • SERVICE:ECSサービスからタスクにタグを伝播します。
  • TASK_DEFINITION:タスク定義からタスクにタグを伝播します。

https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_Service.html#ECS-Type-Service-propagateTags

ECSサービスからタスクにタグを伝播するには、以下のコマンドを使用して、--propagate-tagsオプションでSERVICEを選択し、ECSサービスを更新します。

$ aws ecs update-service \
  --cluster クラスター名\
  --services サービス名 \
  --propagate-tags SERVICE \
  --query "service.propagateTags" \
  --output text

SERVICE

cm-hirai-screenshot 2024-12-24 9.17.47

既存のタスクにはタグが反映されないため、ECSサービスでタスクを強制的にデプロイし、再起動を行います。

cm-hirai-screenshot 2024-12-24 9.19.15

起動したタスクに、CmBillingGroupタグが付与されていることを確認しました。

cm-hirai-screenshot 2024-12-24 9.32.05

数日後、弊社メンバーズのメンバーズポータルサイトでAWS利用金額が確認できました。

cm-hirai-screenshot 2024-12-24 9.22.05

参考

https://repost.aws/knowledge-center/ecs-troubleshoot-tagging-tasks

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.